/*
 * Copyright (c) 2013 UCE (Universidad Central del Ecuador), todos los derechos
 * reservados. Este software es confidencial y su informacion es propiedad de
 * UCE (Universidad Central del Ecuador). No debe revelar tal informacion y debe usarla
 * unicamente de acorde con los terminos de uso.
 */

package ec.linde.modulos.proyectos.servicio;

import java.util.List;
import java.util.Map;

import javax.ejb.Local;

import ec.linde.persistencia.entidades.proyectos.ContactoCliente;

/**
 * TODO: Agregar descripcion
 * 
 * @FechaCreacion: 29/09/2014
 * @author: Alex Carrillo
 * @FechaModificacion: 29/09/2014
 * @author: Alex Carrillo
 * @version: 1.0
 */
@Local
public interface ServicioContactoCliente {
	/**
	 * Guarda ProdContactoCliente
	 * 
	 * @param ContactoCliente
	 *            ProdContactoCliente a ser guardada
	 */
	void guardar(ContactoCliente contactoCliente);

	/**
	 * Elimina ProdContactoCliente
	 * 
	 * @param contactoCliente
	 *            ProdContactoCliente a ser eliminada
	 */
	void eliminar(ContactoCliente contactoCliente);

	/**
	 * Busca por IdContactoCliente
	 * 
	 * @param idContactoCliente
	 *            idContactoCliente a ser buscada
	 * @return ProdContactoCliente
	 */
	ContactoCliente buscarPorId(int idContactoCliente);

	/**
	 * Obtiene lista ProdContactoCliente
	 * 
	 * @param startIndex
	 *            Indice de inicio
	 * @param pageSize
	 *            Tamano de pagina
	 * @param sortField
	 *            Campo a ordenar la lista
	 * @param sortOrder
	 *            Indicador de Orden
	 * @param filters
	 *            Filtros de Lista
	 * @return Lista ProdContactoCliente
	 */
	List<ContactoCliente> obtenerListaPorPagina(int startIndex, int pageSize, String sortField, boolean sortOrder, Map<String, String> filters);

	/**
	 * Obtiene lista Combo ProdContactoCliente
	 * 
	 * @param sortField
	 *            Campo a ordenar la lista
	 * @param sortOrder
	 *            Indicador de Orden
	 * @param filters
	 *            Filtros de Lista
	 * @return
	 */
	public List<ContactoCliente> obtenerListaCombo(String sortField, boolean sortOrder, Map<String, String> filters);

	/**
	 * Recupera el numero de filas de la lista Zona
	 * 
	 * @param filters
	 *            Filtros de Lista
	 * @return Numero de registros de lista
	 */
	int contarPorCriterio(Map<String, String> filters);

	/**
	 * TODO: Agregar descripcion del metodo
	 * 
	 * @param idContactoCliente
	 * @return
	 */
	ContactoCliente cargarDetalle(int idContactoCliente);
	
	/**
	 * @param idCliente
	 * @return
	 */
	List<ContactoCliente> obtenerContactoClientePorCliente(int idCliente);

}
